package com.dty.system.controller;

import com.dty.common.result.R;
import com.dty.common.result.Result;
import com.dty.common.result.ServerResult;
import com.dty.common.utils.FileUtils;
import com.dty.common.utils.JwtHelper;
import com.dty.common.utils.MD5;
import com.dty.model.base.ColumnModel;
import com.dty.model.system.SysUser;
import com.dty.model.vo.LoginVo;
import com.dty.system.exception.GuiguException;
import com.dty.system.service.ColumnService;
import com.dty.system.service.SysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Api(tags = "栏目控制层")
@RestController
@RequestMapping("/admin/system/column")
public class ColumnController {

    @Autowired
    private ColumnService columnService;

    /**
     * 1. 提供一个上传单张或多张图片的接口 返回上传图片的名称
     * 2. 提供一个删除图片的接口 传图片名称进行删除图片
     * 3. 提供一个新增新闻的接口，把上传的封面图片名称传到对应属性
     * 4. 新增新闻的内容为html文本内容（标签加内容，图片内容为image标签）
     */

    @ApiOperation(value = "新增新闻信息")
    @PostMapping("/addColumn")
    public R addColumn(ColumnModel columnModel){
        columnService.addColumn(columnModel);
        return R.ok();
    }

    /**
     * 返回图片名称
     * @param files
     * @return
     */
    @ApiOperation(value = "上传图片")
    @PostMapping("/uploadImage")
    public R<List<String>> uploadImage(@RequestParam("files") MultipartFile [] files){
        List<String> list = new ArrayList<>();
        if (files != null && files.length > 0) {
            for (MultipartFile file : files) {
                // 保存文件
                FileUtils.saveFile(file, list);
            }
        }
        return R.ok(list);
    }

    @ApiOperation(value = "删除图片")
    @PostMapping("/removeImage")
    public R<Object> removeImage(String fileName){
        FileUtils.removeFile(fileName);
        return R.ok();
    }

    @ApiOperation(value = "查询新闻信息")
    @PostMapping("selectColumn")
    public R selectColumn(ColumnModel columnModel){
        Map listColumn= columnService.selectColumn(columnModel);
     //  List<ColumnModel> list1= (List<ColumnModel>) listColumn.get("list");
        return R.ok(listColumn);
    }

    @ApiOperation(value = "展示首页轮播图")
    @PostMapping("showColumn")
    public  R showColumn(Integer whetherClick){
        List<ColumnModel> list=columnService.showColumn(whetherClick);
        return R.ok(list);
    }

    @ApiOperation(value = "上下架")
    @PostMapping("deleteColumnoffShelfColumn")
    public  R offShelfColumn(Integer id,Integer offShelf){
        columnService.offShelfColumn(id,offShelf);
        return R.ok();
    }

    @ApiOperation(value = "删除")
    @PostMapping("deleteColumn")
    public  R deleteColumn(Integer id){
        columnService.deleteColumn(id);
        return R.ok();
    }

    @ApiOperation(value = "编辑")
    @PostMapping("updateColumn")
    public R updateColumn(ColumnModel columnModel){
        columnService.updateColumn(columnModel);
        return R.ok();
    }

    @ApiOperation(value = "点赞")
    @PostMapping("addSpot")
    public R addSpot(Integer id,Integer spot){
        columnService.addSpot(id,spot);
        return R.ok();
    }


}
